package com.tq.portal.connector.gitlab;

import com.tq.portal.connector.gitlab.model.dto.GitLabActivityDTO;
import com.tq.portal.connector.gitlab.model.dto.GitLabCommitDTO;
import com.tq.portal.connector.gitlab.model.dto.GitLabProjectDTO;

import java.util.List;

/**
 * GitLab 客户端
 *
 * @author TqCoder
 * @since 2.0.0
 */
public interface GitLabClient {

    /**
     * 获取所有项目
     *
     * @return 项目列表
     */
    List<GitLabProjectDTO> getAllProjects();

    /**
     * 获取活动列表
     *
     * @param page 页码
     * @param perPage 每页数量
     * @param after 起始时间（可选），ISO 8601 格式，如 2024-01-01T00:00:00Z
     * @param before 结束时间（可选），ISO 8601 格式，如 2024-12-31T23:59:59Z
     * @return 活动列表
     */
    List<GitLabActivityDTO> getActivities(Integer page, Integer perPage, String after, String before);

    /**
     * 获取项目的所有提交记录（包括子模块）
     *
     * @param projectId 项目ID
     * @param branch 分支名称，默认为 master 或 main
     * @param since 起始时间（可选）
     * @param until 结束时间（可选）
     * @return 提交记录列表
     */
    List<GitLabCommitDTO> getProjectCommitsWithSubmodules(Integer projectId, String branch, String since, String until);

}
